package com.zxl.designpattern.behavioral.mediator; /**
 * 聊天室类
 * 实现了Mediator接口，作为中介者协调用户之间的通信
 */
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class ChatRoom implements Mediator {

    // 这里仅做示例，不考虑同名用户的问题
    private Map<String, User> userMaps;  // 用户列表
    
    /**
     * 构造函数，初始化用户列表
     */
    public ChatRoom() {
        userMaps = new HashMap<>();
    }
    
    @Override
    public void registerUser(User user) {
        if (!userMaps.containsKey(user.getName())) {
            userMaps.put(user.getName(), user);
            System.out.println(user.getName() + " 加入了聊天室");
        }
    }
    
    @Override
    public void sendMessage(String senderName, String message) {
        // 找到发送者
        User sender = userMaps.get(senderName);

        if (sender == null) {
            System.out.println("未找到用户: " + senderName);
            return;
        }
        
        // 向所有其他用户转发消息
        System.out.println(senderName + " 说: " + message);
        userMaps.keySet()
            .forEach(key -> {
                if (!key.equals(senderName)) {
                    userMaps.get(key).receiveMessage(senderName, message);
                }
            });
    }
}    